package ddz

//有些不清楚的数据结构，参考 protogo/gameddz/game.ddz.pb.go

type Card struct {
	//牌面点数，
	//3 4 5 6 7 8 9 10 J  Q  K  A  2 小王 大王 ->
	//3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
	Number int32 `json:"number" bson:"number"`
	//扑克花色，当牌为大王或小王时该值无意义
	Flower int32 `json:"flower" bson:"flower"`
}

//--------------游戏开始-----------------

//水位控制打印
//0xff -> 玩家水位控制前， 数据类型: *BeforeControl
//0x100 -> 玩家水位控制后， 数据类型: *AfterControl

type BeforeControl struct {
	//是否是机器人
	IsRobot bool `json:"isRobot" bson:"isRobot"`
	//杀分率
	KillRate float32 `json:"killRate" bson:"killRate"`
}

type AfterControl struct {
	//是否控制
	IsControl bool `json:"isControl" bson:"isControl"`
	//杀分类型 -> 0: 正常，1: 杀分，2: 放分
	KillType int32 `json:"killType" bson:"killType"`
}

//--------------游戏进行中----------------

//Event_GAME_START 6553603 -> 下发玩家17张手牌，开始叫地主通知， 数据类型：[]Card

//开局第 1 秒，1号玩家手牌♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q
//开局第 1 秒，2号玩家手牌♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q
//开局第 1 秒，3号玩家手牌♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q♥️2♣️J♥️Q

//Event_CALL_BANKER_REQ 6553611 -> 玩家叫地主请求，数据类型int32, 分别对应0,1,2,3分

//开局第 2 秒，1号叫地主，不叫
//开局第 3 秒，2号叫地主，2分
//开局第 4 秒，3号叫地主，3分

//Event_ENSURE_BANKER_NOTIFY 6553613 -> 确定庄家，开始加倍通知，下发庄家信息和3张地主牌， 数据类型：*gameddz.EnsureBanker

//开局第5秒，3号玩家是地主，地主三张牌为 ♥️2♣️J♥️Q

//Event_PLAYER_DOUBLE_REQ 6553614 -> 农民加倍请求，数据类型bool, true:加倍，false:不加倍

//开局第 6 秒，1号玩家不加倍
//开局第 7 秒，2号玩家加倍

//Event_START_OUTCARD_NOTIFY 6553616 -> 开始出牌通知， 数据类型：nil

//开局第8秒，开始出牌

//Event_OUT_CARD_REQ 6553617 -> 玩家出牌请求，数据类型：*gameddz.OutCard

//开局第 9 秒，3号玩家出牌 ♣️J♥️Q♣️J♥️Q♣️J♥️Q
//开局第 10 秒，1号玩家pass
//开局第 11 秒，2号玩家pass

//Event_OUT_CARD_NEW_ROUND 6553619 -> 新的出牌回合, 出牌者的座位号, 数据类型int32

//开局第 12 秒，新的出牌回合，3号玩家开始出牌

//--------------游戏结束------------------
type GameResult struct {
	//玩家倍数
	Multiple int32 `json:"multiple" bson:"multiple"`
	//玩家剩余手牌
	Cards []Card `json:"cards" bson:"cards"`
}

//EndData -> Data 里面存放着地主的三张牌， 数据类型：[]Card
//PlayerData -> Result 暂无数据， 数据类型：*GameResult
//PlayerData -> Data 里面存放着玩家的剩余手牌， 数据类型：nil
